package cn.com.captureNetPacket.model;

import java.util.HashSet;

import lombok.Data;

@Data
//@Configuration
//@ConfigurationProperties(prefix = "cnp")
public class ConfigData {
		 private HashSet monitorNetworkCardIP;
            /**
             *   最后一次接受到任何数据包的超时时间，如果超过一定时间，可能网卡需要重新抓包。
             *   专用多久未收到包后重启网卡用，之前网卡可能相互等待，导致无法收到包，重启正常加的参数。目前应该已解决，此参数后期可能移除或它用。
             *   -1 时该参数不会重启网卡。
             */
           private int timeOutPacket=-1;
         private int hertTimeOutPacket;
         private int rtpBatchPackagesSave;

         private boolean ipLogOpen;
         private boolean tcpLogOpen;
         private boolean udpLogOpen;
         private boolean IP4UnknownLogOpen;
         
         private boolean analysisIP4Unknown;
         private boolean analysisTcp;
         private boolean analysisSip;
         private boolean analysisUdp;
         private boolean analysisRtp;
         private boolean analysisIpv6;
         private String tempFilePath;
         private long tempFileKeepDay;
         private long recordFileKeepDay;
         private boolean realTimeTransmissionData;
         private long realTimeMaxRetainData;
         private boolean saveFile;
         private int saveFileCacheMaxSize;
         private int surplus;
         private String saveFilePath;
         private String callUUIDKey;
         private HashSet sipServerIPs;
         private HashSet rtpServerIPs;
         private boolean dependThirdParty;
         private String dependThirdPartyUrl;
         private String dependThirdPartyPlatform;
         private String filterExpression;
         private String dependThirdPartyRedisPrefix;
         private String dependThirdPartyRedisExpressionCallId;
         private long waitDeviceStatusTimeOut;
         private long waitSipSignallingInfoTimeOut=5000;
         private boolean realTimeCustomerPositive =true;

         // 是否抓取所有的rtp，开启后会抓不管是否配置分机表里面的IP，调试时用。建议关闭
         private boolean capAllRtpIP=true;

         private int packetCollectIntervalTime=1000;
    // rtp超时写文件的时间，毫秒
    // rtp超时写文件的时间，毫秒。设置后多久无rtp就开始整理数据生成录音文件和写数据库。
       private int rtpPacketTimeOut=5000;

      //    是否接受处理非标准  rtpAudioPacketSize 大小的数据包存到录音中。g711  160的大小，其他应该不接受的。
        private boolean acceptOtherRtpPacketSize=false;
         //  接受非标准的rtpAudioPacketSize 的处理，为true 标识接受最后的rtpAudioPacketSize大小的包。false 时将整个包的数据放在录音文件中。
         private boolean acceptOtherRtpAudioPacketSize=true;
          //         rtpAudioPacketSize 的大小，g711一般为160
         private int rtpAudioPacketSize=160;
    /**
     *
     接受其他rtp包大小的大小，用来生成 bufferSize时的内存大小空间时使用，如果大于0 则包数* otherRtpAudioPacketSize，否则包数* rtpAudioPacketSize的缓存大小。
     */
         private int otherRtpAudioPacketSize=0;


    /**
     * 移除未接通时，是否前面一部分振铃或是其他情况的语音包。保证语音对齐。默认 false
     */
    private boolean  removeFront=false;
    /**
     * 允许补充包的间隔，比如跳包间隔小于n则不补充包，默认大小为0，不允许跳包，间隔大小为1。
     */
    private int  allowSkipPacketNum=0;
    /**
     *  每轮次抓包的数量。
     *  //0标识不断获取数据包  参数 cnt为指定的捕获包的个数 	//cnt=-1,无限捕获 //cnt=0，捕获所有数据包，直到读取到EOF
     */
    private int pcapLoopSize=-1;


    //  ---------文件相关属性

    /**
     * 路径不为空，开启读取文件模式
     */
    private String  filePath="";
    /**
     *  tcpdump命令
     *  tcpdump -i any -W 50 -C 1000M udp -w capfile.pcap    按照50个归档，每个1000M
     */
    private String  tcpdumpCommand="tcpdump -i any -W 50 -C 1000M udp -w capFile.pcap";


    /**
     * 文件过滤表达式，可设置为空字符串
     */
    private String fileFilterExpression;


    /**
     * 文件扫描间隔时间.ms毫秒单位
     */
    private int fileScanIntervalTime=1000;
}
